package com.yq.ylmall.product.service;

import com.yq.ylmall.dto.product.CategoryOperateDto;
import com.yq.ylmall.dto.product.RemoveDto;
import com.yq.ylmall.model.product.Category;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * <p>
 * 商品分类 服务类
 * </p>
 *
 * @author yzk789
 * @since 2024-05-30
 */
public interface ICategoryService extends IService<Category> {

    /**
     * 获取分类列表，先走缓存，缓存中没有，再访问数据库
     * @return String
     */
    String findAll();

    /**
     * 根据ID修改分类，删除旧图片
     * @param dto {@link CategoryOperateDto}
     * @return Boolean
     */
    Boolean doUpdate(CategoryOperateDto dto);

    /**
     * 根据ID和图片URL删除分类及图片
     * @param dto {@link RemoveDto}
     * @return Boolean
     */
    Boolean doRemoveById(RemoveDto dto);

    /**
     * 根据ID数组查询图片地址，再删除分类数据及图片
     * @param ids 分类ID列表
     * @return Boolean
     */
    Boolean doRemoveByIds(List<Long> ids);

    /**
     * 导出分类数据到excel文件
     * @param response 响应对象
     */
    void exportData(HttpServletResponse response);

    /**
     * 从excel导入数据
     * @param file MultipartFile
     */
    void importData(MultipartFile file);

    /**
     * 根据parentId获取下级节点
     * @param parentId
     * @return
     */
    List<Category> findByParentId(Long parentId);
}
